/**
 * Created with IntelliJ IDEA.
 * Description:
 * Date: 2024-03-22
 * Time:23:58
 */
public class Solution {
    public int maxProfit(int[] prices) {
        int n = prices.length;
        //dp[i]表示在第i天所得最大利润
        int[][] dp = new int[3][n + 1]; // 0：持有股票 1：可交易 2：冷冻
        dp[0][0] = -prices[0];  //第一天买股票的话，利润就为负的
        for (int i = 1; i <= n; i++) {
            dp[0][i] = Math.max(dp[0][i - 1], dp[1][i - 1] - prices[i - 1]);
            dp[1][i] = Math.max(dp[1][i - 1], dp[2][i - 1]);
            dp[2][i] = dp[0][i - 1] + prices[i - 1];
        }
        return Math.max(dp[1][n],dp[2][n]);
    }
}
